今天我要用昨天匯入kaggle資料,透過神經網路模型來繪製損失函數折線圖,最後希望可以用測試資料計算出誤差百分比。
一開始我們先對資料作處理,透過下列的程式碼可以將data裡的字串格式轉變成數值的年、月、日。
data['year'] = pd.to_numeric(data['date'].str.slice(0, 4))
data['month'] = pd.to_numeric(data['date'].str.slice(4, 6))
data['day'] = pd.to_numeric(data['date'].str.slice(6, 8))
刪除沒有用的資料,將更新後的資料存回原本的地方。
data.drop(['id'] , axis="columns",inplace=True)
data.drop(['date'] , axis="columns",inplace=True)
取的一筆資料,並把他們打散把資料的比例做劃分。
data_num =data.shape[0]
indexes = np.random.permutation(data_num)
train_indexes = indexes[:int(data_num*0.6)]
val_indexes = indexes[int(data_num*0.6):int(data_num*0.8)]
test_indexes = indexes[int(data_num*0.8)]
透過索引值從data取出訓練資料、驗證資料和測試資料
train_data = data.loc[train_indexes]
val_data = data.loc[val_indexes]
test_data = data.loc[test_indexes]
標準化主要是將不同的資料縮放到相同的大小,如果你的資料量差異極大,可能會導致網路重視較大的資料而忽略數值小的資料,為了解決這個問題,我們通常把資料縮放至0~1或-1~1之間
train_validation_data = pd.concat([train_data,val_data])
mean = train_validation_data.mean()
std = train_validation_data.std()
train_data = (train_data-mean)/std
val_data = (val_data-mean)/std
利用numpy格式訓練資料
x_train = np.array(train_data.drop('price', axis='columns'))
y_train = np.array(train_data['price'])
x_val = np.array(val_data.drop('price', axis='columns'))
y_val = np.array(val_data['price'])
x_train.shape
由此可知訓練資料為12967筆,每筆資料有21種資訊。今天都把資料轉換成資訊,明天就可以直接拿來training了。